﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Elegant.Telas.Controles
{
    class LogTicket
    {
        private string language;
        private System.ComponentModel.ComponentResourceManager resources;


        public string Language
        {
            get { return language; }
            set { language = value; }
        }
               
        /// <summary>
        /// Construtor, define linguagem das mensagens do ticket
        /// </summary>
        /// <param name="language">linguagem do ticket</param>
        public LogTicket(string language){
            this.language = language;
            //this.resources = new System.ComponentModel.ComponentResourceManager(typeof(LogTicket));
        }

        /// <summary>
        /// Construtor, define linguagem padrão
        /// </summary>
        public LogTicket()
        {
            this.language = Thread.CurrentThread.CurrentUICulture.ToString();
        }


        /// <summary>
        /// Retorna a hora do log
        /// </summary>
        /// <returns>string com a hora atual</returns>
        private string getLogTime(){
            return "" + DateTime.Now;
        }


        /// <summary>
        /// Método que retorna a mensagem na língua definida
        /// </summary>
        /// <param name="ptMessage">mensagem em idioma português</param>
        /// <param name="enMessage">mensagem em idioma inglês</param>
        /// <returns>string com a mensagem na língua definida</returns>
        private string getLanguageMessage(string ptMessage, string enMessage)
        {
            string message = "";
            if (language.Equals("pt-BR"))
            {
                message = "" + this.getLogTime() + " - " + ptMessage;
            }
            else if (language.Equals("en-CA"))
            {
                message = "" + this.getLogTime() +  " - " +enMessage;
            }
            return message;

        }


        /// <summary>
        /// Retorna a mensagem de log para ticket válido
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log de ticket válido</returns>
        public string getValidTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " carregado com sucesso";
            //string ptMessage = "Ticket " + ticketName + resources.ApplyResources() ;
            string enMessage = "Ticket " + ticketName + " was successfully loaded";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket inválido
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log de ticket inválido</returns>
        public string getInvalidTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " carregado sem sucesso";
            string enMessage = "Ticket " + ticketName + " was unsuccessfully loaded";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket atualizado
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket atualizado</returns>
        public string getUpdatedTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " atualizado";
            string enMessage = "Ticket " + ticketName + " updated";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket não atualizado
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket não atualizado</returns>
        public string getNotUpdatedTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " não atualizado";
            string enMessage = "Ticket " + ticketName + " not updated";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket processado
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket processado</returns>
        public string getProcessedTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " processado";
            string enMessage = "Ticket " + ticketName + " processed";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket não processado
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket não processado</returns>
        public string getNotProcessedTicketLog(string ticketName)
        {
            string ptMessage = "Ticket " + ticketName + " não processado";
            string enMessage = "Ticket " + ticketName + " not processed";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket em início de processamento
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket em início de processamento</returns>
        public string getStartProcessLog(string ticketName)
        {
            string ptMessage =  "Início do processamento do ticket " + ticketName;
            string enMessage =  "Beggining ticket " + ticketName + " processing";
            return getLanguageMessage(ptMessage, enMessage);
        }

        /// <summary>
        /// Retorna a mensagem de log para ticket em término de processamento
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de log para ticket em término de processamento</returns>
        public string getFinalProcessLog(string ticketName)
        {
            string ptMessage = "Término do processamento do ticket " + ticketName;
            string enMessage = "Finished ticket " + ticketName + " processing";
            return getLanguageMessage(ptMessage, enMessage);
        }

        
    }
}
